home *** CD-ROM | disk | FTP | other *** search
- #pragma once
-
- #ifndef __FILEITERATORS__
- #define __FILEITERATORS__
-
- #include <ConditionalMacros.h>
-
- #include "FSSpecification.h"
-
- //========================================================================================
- // CLASS TAbstractFileIterator
- //========================================================================================
-
- class TAbstractFileIterator
- {
- public:
- virtual ~TAbstractFileIterator();
-
- virtual Boolean More() const = 0;
- virtual void Next() = 0;
- virtual TFSSpecification Current() const = 0;
-
- private:
- };
-
- //
- // Search flags for catalog searcher
- //
- enum
- {
- kSeachFilesOnly = 1,
- kSearchDirectoriesOnly = 2,
- kSeachFilesAndDirectories = 3,
- kNameMustMatchExactly = 4,
- kOnlyOneMatch = 8
- };
-
- //========================================================================================
- // CLASS TCatalogSearchIterator
- //========================================================================================
-
- class TCatalogSearchIterator : public TAbstractFileIterator
- {
- public:
- TCatalogSearchIterator(SInt32 vRefNum, CInfoPBRec& searchSpec, CInfoPBRec& searchMask, SInt32 flags = 0);
- TCatalogSearchIterator(SInt32 vRefNum, unsigned char* fileName, OSType fileType = 0, OSType fileCreator = 0, SInt32 flags = 0);
- virtual ~TCatalogSearchIterator();
-
- virtual Boolean More() const;
- virtual void Next();
- virtual TFSSpecification Current() const;
-
- private:
- void InitializeParamBlock(SInt32 vRefNum, CInfoPBRec& searchSpec, CInfoPBRec& searchMask, SInt32 flags);
- void ReadMoreInfoViaCatSearch();
-
- private:
- CSParam fParamBlock;
- CInfoPBRec fSearchSpec;
- CInfoPBRec fSearchMask;
-
- Handle fCatSearchBuffer;
- FSSpec** fResultsBuffer;
-
- SInt32 fCurrentEntry;
- SInt32 fEntriesInBuffer;
- Boolean fCatsearchHasMoreDataToReturn;
- };
-
-
- #endif
-